const app = getApp()
const productApi = require('../../api/product')
const noticeApi = require('../../api/notice')

Page({
  data: {
    isLogin: false,
    userInfo: null,
    unreadCount: 0,
    // 商品轮播图数据
    productBanners: [],
    // 加载状态
    loadingProducts: false,
    loadingNotices: false,
    notices: []
  },

  onLoad: function (options) {
    this.checkLoginStatus()
    this.loadHotProducts()
    this.loadNotices()
  },

  onShow: function () {
    this.checkLoginStatus()
    if (this.data.isLogin) {
      this.loadUserData()
    }
    // 每次显示页面时刷新商品数据和公告数据
    this.loadHotProducts()
    this.loadNotices()
  },

  // 测试函数 - 验证事件绑定是否正常
  testClick() {
    console.log('=== testClick 被调用 - 事件绑定正常 ===')
    wx.showToast({
      title: '点击事件正常',
      icon: 'success'
    })
  },

  // 检查登录状态
  checkLoginStatus() {
    const isLogin = app.globalData.isLogin
    const userInfo = app.globalData.userInfo

    this.setData({
      isLogin: isLogin,
      userInfo: userInfo
    })
  },

  // 加载用户相关数据
  async loadUserData() {
    try {
      // 加载用户的未读消息数量
      const result = await noticeApi.getUnreadCount()
      console.log('未读消息数量API响应:', result)

      if (result !== undefined && result !== null) {
        this.setData({
          unreadCount: result
        })
        console.log('未读消息数量更新为:', result)
      } else {
        // API调用失败时使用默认值
        this.setData({
          unreadCount: 0
        })
      }
    } catch (error) {
      console.error('获取未读消息数量失败:', error)
      // 获取失败时不显示未读数量
      this.setData({
        unreadCount: 0
      })
    }
  },

  // 加载热门商品
  async loadHotProducts() {
    if (this.data.loadingProducts) return

    this.setData({ loadingProducts: true })

    try {
      console.log('开始加载热门商品...')
      const result = await productApi.getHotProducts(4)
      console.log('热门商品API响应:', result)

      if (result && result.records && result.records.length > 0) {
        // 转换商品数据格式以适配轮播图
        const productBanners = result.records.map((product, index) => ({
          id: product.id,
          image: product.image || `https://picsum.photos/800/400?random=${index + 1}`,
          title: product.productName,
          subtitle: product.model || '优质商品，值得信赖',
          price: `¥${parseFloat(product.sellingPrice || 0).toFixed(2)}`,
          originalPrice: product.originalPrice ? `¥${parseFloat(product.originalPrice).toFixed(2)}` : '',
          tag: product.currentStock > 10 ? '现货充足' : product.currentStock > 0 ? '库存有限' : '暂时缺货',
          productData: product // 保存完整的商品数据
        }))

        this.setData({
          productBanners: productBanners
        })
        console.log('热门商品加载成功，共', productBanners.length, '个商品')
      } else {
        console.log('没有获取到商品数据，使用默认数据')
        this.setDefaultProducts()
      }
    } catch (error) {
      console.error('加载热门商品失败:', error)
      this.setDefaultProducts()
    } finally {
      this.setData({ loadingProducts: false })
    }
  },

  // 设置默认商品数据（当API失败时使用）
  setDefaultProducts() {
    const defaultProducts = [
      {
        id: 'default_1',
        image: 'https://picsum.photos/800/400?random=1',
        title: '专业理发工具',
        subtitle: '优质理发工具，专业品质',
        price: '¥199',
        originalPrice: '¥259',
        tag: '热门推荐'
      },
      {
        id: 'default_2',
        image: 'https://picsum.photos/800/400?random=2',
        title: '护发产品',
        subtitle: '滋养修护，呵护秀发',
        price: '¥128',
        originalPrice: '¥168',
        tag: '限时特惠'
      }
    ]

    this.setData({
      productBanners: defaultProducts
    })
  },

  // 加载公告数据
  async loadNotices() {
    if (this.data.loadingNotices) return

    this.setData({ loadingNotices: true })

    try {
      console.log('开始加载公告数据...')
      // 获取最新的5条已发布公告
      const result = await noticeApi.getNoticeList({
        page: 1,
        size: 5
      })
      console.log('公告API响应:', result)

      if (result && result.records && result.records.length > 0) {
        // 转换公告数据格式
        const notices = result.records.map(notice => ({
          id: notice.id,
          title: notice.title,
          content: notice.content,
          createTime: this.formatNoticeTime(notice.publishTime || notice.createTime),
          publisherName: notice.publisherName
        }))

        this.setData({
          notices: notices
        })
        console.log('公告数据加载成功，共', notices.length, '条公告')
      } else {
        console.log('没有获取到公告数据，使用默认数据')
        this.setDefaultNotices()
      }
    } catch (error) {
      console.error('加载公告数据失败:', error)
      this.setDefaultNotices()
    } finally {
      this.setData({ loadingNotices: false })
    }
  },

  // 设置默认公告数据（当API失败时使用）
  setDefaultNotices() {
    const defaultNotices = [
      {
        id: 'default_1',
        title: '本店推出新的理发套餐，欢迎体验',
        createTime: '2024-01-15',
        publisherName: '店长'
      },
      {
        id: 'default_2', 
        title: '春节期间营业时间调整通知',
        createTime: '2024-01-10',
        publisherName: '店长'
      }
    ]

    this.setData({
      notices: defaultNotices
    })
  },

  // 格式化公告时间显示
  formatNoticeTime(timeStr) {
    if (!timeStr) return '今天'
    
    try {
      const noticeDate = new Date(timeStr)
      const now = new Date()
      const today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
      const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000)
      const noticeDay = new Date(noticeDate.getFullYear(), noticeDate.getMonth(), noticeDate.getDate())

      if (noticeDay.getTime() === today.getTime()) {
        return '今天'
      } else if (noticeDay.getTime() === yesterday.getTime()) {
        return '昨天'
      } else if (now.getTime() - noticeDate.getTime() < 7 * 24 * 60 * 60 * 1000) {
        // 一周内显示具体日期
        const weekdays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
        return weekdays[noticeDate.getDay()]
      } else {
        // 超过一周显示具体日期
        const month = noticeDate.getMonth() + 1
        const day = noticeDate.getDate()
        return `${month}-${day}`
      }
    } catch (error) {
      console.error('格式化时间失败:', error)
      return timeStr
    }
  },

  // 跳转到登录页面
  goToLogin() {
    wx.navigateTo({
      url: '/pages/auth/login/login'
    })
  },

  // 跳转到预约页面
  goToAppointment() {
    if (!this.checkLoginRequired()) return

    wx.switchTab({
      url: '/pages/appointment/appointment',
      fail: (error) => {
        console.error('跳转到预约页面失败:', error)
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        })
      }
    })
  },

  // 跳转到商品页面
  goToProducts() {
    if (!this.checkLoginRequired()) return

    wx.switchTab({
      url: '/pages/product-list/product-list',
      fail: (error) => {
        console.error('跳转到商品页面失败:', error)
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        })
      }
    })
  },

  // 跳转到充值页面
  goToRecharge() {
    if (!this.checkLoginRequired()) return
    
    wx.navigateTo({
      url: '/pages/recharge/recharge'
    })
  },

  // 跳转到消费记录页面
  goToRecords() {
    if (!this.checkLoginRequired()) return
    
    wx.navigateTo({
      url: '/pages/purchase-records/purchase-records'
    })
  },

  // 跳转到我的预约页面
  goToMyAppointments() {
    if (!this.checkLoginRequired()) return

    wx.switchTab({
      url: '/pages/my-appointments/my-appointments',
      fail: (error) => {
        console.error('跳转到我的预约页面失败:', error)
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        })
      }
    })
  },

  // 跳转到我的订单页面
  goToMyOrders() {
    if (!this.checkLoginRequired()) return
    
    wx.navigateTo({
      url: '/pages/purchase-records/purchase-records'
    })
  },

  // 跳转到余额管理页面
  goToBalance() {
    if (!this.checkLoginRequired()) return
    
    wx.navigateTo({
      url: '/pages/balance/balance'
    })
  },

  // 跳转到消息中心页面
  goToMessages() {
    if (!this.checkLoginRequired()) return

    wx.navigateTo({
      url: '/pages/message-center/message-center',
      success: () => {
        // 跳转成功后，可以重置未读数量（因为用户即将查看消息）
        console.log('跳转到消息中心成功')
      },
      fail: (error) => {
        console.error('跳转到消息中心失败:', error)
        wx.showToast({
          title: '页面跳转失败',
          icon: 'none'
        })
      }
    })
  },

  // 检查是否需要登录
  checkLoginRequired() {
    if (!this.data.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再使用此功能',
        confirmText: '去登录',
        success: (res) => {
          if (res.confirm) {
            this.goToLogin()
          }
        }
      })
      return false
    }
    return true
  },

  // 商品轮播图点击事件
  onProductBannerTap(e) {
    const product = e.currentTarget.dataset.product
    if (product) {
      // 如果有真实商品数据，跳转到商品详情页
      if (product.productData && product.productData.id) {
        if (!this.checkLoginRequired()) return

        wx.navigateTo({
          url: `/pages/product-detail/product-detail?id=${product.productData.id}`,
          fail: (error) => {
            console.error('跳转到商品详情页失败:', error)
            wx.showToast({
              title: '页面跳转失败',
              icon: 'none'
            })
          }
        })
      } else {
        // 默认商品，显示信息并跳转到商品列表
        wx.showModal({
          title: product.title,
          content: `${product.subtitle}\n\n现价：${product.price}${product.originalPrice ? '\n原价：' + product.originalPrice : ''}`,
          confirmText: '查看更多商品',
          cancelText: '稍后再说',
          success: (res) => {
            if (res.confirm) {
              if (!this.checkLoginRequired()) return
              // 跳转到商品列表页面（使用switchTab）
              wx.switchTab({
                url: '/pages/product-list/product-list',
                fail: (error) => {
                  console.error('从轮播图跳转到商品页面失败:', error)
                  wx.showToast({
                    title: '页面跳转失败',
                    icon: 'none'
                  })
                }
              })
            }
          }
        })
      }
    }
  },

  // 公告点击事件
  async onNoticeTap(e) {
    const notice = e.currentTarget.dataset.notice
    
    try {
      // 如果是默认公告，直接显示标题
      if (typeof notice.id === 'string' && notice.id.startsWith('default_')) {
        wx.showModal({
          title: notice.title,
          content: '欢迎使用我们的理发店小程序！',
          showCancel: false,
          confirmText: '我知道了'
        })
        return
      }

      // 获取公告详情
      const detail = await noticeApi.getNoticeDetail(notice.id)
      
      if (detail && detail.title) {
        let content = detail.content || notice.title
        // 移除HTML标签，只显示纯文本
        content = content.replace(/<[^>]*>/g, '').trim()
        
        wx.showModal({
          title: detail.title,
          content: content || '暂无详细内容',
          showCancel: false,
          confirmText: '我知道了'
        })
        
        // 标记为已读
        try {
          await noticeApi.markAsRead(notice.id)
        } catch (error) {
          console.log('标记已读失败:', error)
        }
      } else {
        throw new Error('获取公告详情失败')
      }
    } catch (error) {
      console.error('获取公告详情失败:', error)
      // 降级显示基本信息
      wx.showModal({
        title: notice.title || '系统公告',
        content: notice.content || '点击查看详细内容时出现错误，请稍后重试。',
        showCancel: false,
        confirmText: '我知道了'
      })
    }
  }
}) 